package com.common.base;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.common.GlobalPara;
import com.jfinal.core.Controller;
import com.jfinal.kit.Ret;
import com.model.User;

public class BaseController extends Controller {
	@Override
	public void render(String view) {
		getRequest().setAttribute(GlobalPara.JSP_PATH_NAME, view);
		super.render(view);
	}

	/**
	 * 
	 * 方法简介:刷新datagrid窗口
	 * <p>
	 * 方法详述
	 * </p>
	 * 
	 * @author 张龙
	 * @throws IOException
	 * @date 创建时间 2015-4-1
	 * @since V1.0
	 */
	public <T> void refreshDataGrid(List<T> data){
		String realid, pageindex, pagesize;
		Ret ret = new Ret();
		List<T> result = new ArrayList<T>();
		realid = getPara("_realid");
		pageindex = getPara("page");// 页码
		pagesize = getPara("rows");// 每页展示的记录数

		if (data == null) {
			data = new ArrayList<T>();
		}
		// 在刷新datagrid的时候往session存放结果，以便使用下一页和导出时不再访问数据库
		getSession().setAttribute(realid, data);
		int total = data.size();
		//前台datagrid有分页的情况
		if(pageindex!=null&&pagesize!=null){
			int ipageindex = Integer.valueOf(pageindex);
			int ipagesize = Integer.valueOf(pagesize);
			int begin = (ipageindex - 1) * ipagesize;// 开始的索引
			int end = ipageindex * ipagesize;// 结束的索引
			
			if (begin > total) {
				result = new ArrayList<T>();
			} else {
				if (end > total) {
					end = total;
				}
				result = data.subList(begin, end);
			}
		//前台datagrid不分页,一次性返回
		}else{
			result = data;	
		}

		ret.set("total",total);
		ret.set("rows",result);
		renderJson(ret);
	}
	public void renderSuccess(){
		renderJson("_success", true);
	}
	public User getCurrentUser(){
		return (User)getSession().getAttribute(GlobalPara.CURRENT_USER);
	}
}
